from torch import nn
import torch

inputs = torch.randn(5, 3, 10)  # (seq_len, batch_size,vocab_size)
h0 = torch.randn(2, 3, 20)  # (num_layers * 2, batch_size, hidden_size)
# bidirectional=True 设置双向循环网络
# 1、开启双向循环网络后，隐藏层状态的数量会变为2，第一维度需要设置为（num_layers * 2）
# 2、得到的输出值，最后一个维度为（2 * hidden_size）,最终在FC的nn.Linear(2 * hidden_size,vocab_size)
rnn = nn.RNN(10, 20, 1, bidirectional=True)  # (vocab_size,hidden_size,num_layers)
outputs, h = rnn(inputs, h0)
print(outputs.shape)
print(h.shape)
